package com.wuyou.sso2.handler.login;

import cn.hutool.core.util.StrUtil;
import com.wuyou.sso.common.entity.User;
import com.wuyou.sso.common.enums.LoginTypeEnum;
import com.wuyou.sso2.vo.UserVO;

/**
 * 通用登录处理器
 *
 * @author lishangbu
 * @date 2021/4/9
 */
public interface LoginHandler {

    /***
     * 数据合法性校验
     * @param loginStr 用户登录字符串
     * @return
     */
    default Boolean check(String loginStr) {
        return StrUtil.isNotBlank(loginStr);
    }

    /**
     * 执行用户认证
     * 通过用户传入获取唯一标识
     *
     * @param identifyStr 登录标识
     * @return 登录标识
     */
    String identify(String identifyStr);

    /**
     * 通过openId 获取用户信息
     *
     * @param identify 用户标识
     * @return 用户信息
     */
    UserVO info(String identify);

    /**
     * 绑定逻辑
     *
     * @param user     用户实体
     * @param identify 渠道返回唯一标识
     * @return
     */
    void bind(User user, String identify);


    /**
     * 是否支持登录类型
     *
     * @param type 登录类型
     * @return 是否支持该处理器
     */
    Boolean support(LoginTypeEnum type);
}
